package com.linkgie.galaxyframework.shell;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;

/**
 * 将一个类型声明为 Shell 控制台组件；<p>
 * 控制台组件中标注了 {@link ShellCommand} 的方法被注册为命令；
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Shell {
	
	String INHERITED = "";

	/**
	 * 组件名；
	 * @return
	 */
	@AliasFor(value = "value", annotation = Component.class)
	String value() default INHERITED;
	
	/**
	 * 命令分组；
	 * 
	 * @return
	 */
	String group() default INHERITED;
}
